git删除commit方法和误删commit后的恢复方法

您所在的位置:网站首页 git head损毁 git删除commit方法和误删commit后的恢复方法

git删除commit方法和误删commit后的恢复方法

2024-01-09 13:49| 来源: 网络整理| 查看: 265

一、如果你在git上提交了错误的commit,不要慌,通过下面的方法可以回退到之前的commit

如果只误提交了一个commit, 直接执行

git reset --hard HEAD^ 

这一条命令就OK了(但是这条命令会把最近一次commit的代码删除哦,如果要保留代码,请看本文最后面部分)

如果你要回滚多个 commit 可以使用下面的方法:

第一步:通过git log可以查看我们之前提交的commit_id:

第二步:复制你需要回滚的commit_id。不过windows下的命令行是不能复制文本的,为此你可以到github上查看仓库的commit历史,上面是可以直接复制的:

复制好后在命令行执行:git reset --hard

git reset --hard 4458e09

第三步:执行: git push origin HEAD --force 提交当前HEAD

这样就能够将错误的提交删除,回滚至其之前的代码

但是如果当你回滚代码以后发现commit_id复制错了或者回滚错了怎么办呢?不要慌!!!按下面的方法做:

    

第一步:执行 git reflog

    你能在命令行中看到你的历史操作,复制你要恢复操作最前面的hash值

第二步:执行 git reset --hard

    命令中最后要输的hash就是你要恢复的历史记录最前面黄色部分的hash值

    比如:

git reset --hard 4458e09

这样就成功解决问题了。

但是上面的操作仍然有缺陷,我们经常遇到的情况是:在错误的分支写了大量代码,并且已经push到远程仓库,这个时候我们要的不仅是回退commit,并且要保留自己新写的代码并且合并到正确的分支上。

接下来不要眨眼,我们来演示如何解决问题:

第一步:找到你提交之前的最新commit id,执行如下命令:

git reset --soft 4458e09

这条命令会把你本地的当前分支回退到之前的commit,并且保留你在这条commit 之后写的代码。

第二步:执行git stash 将新写的代码放到缓存中

git stash

第三步:把当前分支强行覆盖远程分支

git push --force

第四步:切换到正确的开发分支,这里假设是dev分支

git checkout dev

第五步:把缓存的代码从内存中 pop 出来

git stash pop

执行完这五步,当前分支的错误提交就清理了,并且你的代码也回到了正确的dev分支。

但是,需要注意,这样的操作必须保证在你的错误提交之后别人没有提交代码,否则这样操作将会把别人正常提交的代码回退掉。

二、再补一下git reset 的相关参数:

--mixed

意思是不删除工作空间改动代码,撤销commit ,并且撤销git add . 操作

这个是reset命令的默认参数,即git reset —mixed HEAD^ 和 git reset HEAD^ 效果是一样的

--soft

不删除工作空间改动代码,撤销commit, 撤销git add .

--hard

删除工作空间代码,撤销commit,撤销git add .

注意,添加该参数后执行后,你最新提交的代码会从内存中删除

当然如果误删了可以通过上面的方法找回来。

三、最后再补充一些常用的git 命令

1、git checkout

切换到目标分支,比如切换到 test 分支:git checkout test

同时可以用git checkout . 直接回到当前分支的最新commit代码,同时放弃未提交更改,但是这条命令在合并分支的时候请慎用。

2、git checkout -b

从当前分支创建并切换到一个新的分支,比如创建并切换到test分支:

git checkout -b test

3、git push --up-stream  origin

把一个远程没有的分支推送到远程仓库,比如新创建的test分支

git push --up-stream origin test

4、git branch -D

删除本地分支,例如删除本地test分支

git branch -D test

5、git push origin --delete

删除远程分支,仍然以删除远程test分支为例

git push origin --delete test



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3